home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / gfx / 3d / Skulpt_src.lha / sKulpt-src / Vars.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-10-05  |  6.1 KB  |  155 lines

  1. #define STRICT
  2.  
  3. // Includes standard Windows
  4. #include <windows.h>
  5. #include <windowsx.h>
  6. #include <time.h>
  7. #include <stdlib.h>
  8. #include <malloc.h>
  9. #include <memory.h>
  10. #include <stdio.h>
  11.  
  12. // Includes D3D
  13. #define  D3D_OVERLOADS
  14. #include <ddraw.h>
  15. #include <d3d.h>
  16. #include <d3dx.h>
  17. #include "D3DEnum.h"
  18.  
  19. // Constantes
  20. #include "const.h"
  21.  
  22. // Types
  23. #include "types.h"
  24.  
  25. // Variables globales
  26. HINSTANCE hInst;
  27. LPDIRECTDRAW7            lpDD = NULL;                // Interface IDirectDraw7 
  28. LPDIRECT3D7                lpD3D = NULL;                // Interface IDirect3D7 
  29. LPDIRECTDRAWSURFACE7    lpddsRender = NULL;            // Surface Rendering
  30. LPDIRECTDRAWSURFACE7    lpddsBackBuffer = NULL;        // Surface Backing store
  31. LPDIRECTDRAWSURFACE7    g_pddsZBuffer    = NULL;    // Surface Z-buffer  
  32. LPDIRECT3DDEVICE7        lpd3dDevice = NULL;            // Device D3D 
  33. RECT                    sRectangle;                    // Rectangle courant
  34. DDSURFACEDESC2            ddsd;
  35. GUID gDeviceGUID;
  36.  
  37. BOOL bActive  = TRUE;                                 // Vue 3D active
  38. BOOL bReady   = FALSE;                                // Application prête à faire un render
  39. BOOL bLightFull = TRUE;                             // Lighting complet ou simpliste
  40. BOOL bGrid      = FALSE;                                // Grille o/n
  41.  
  42. float fGridSize = 1.0;                                // Pas de la grille
  43.  
  44. D3DVECTOR Observer( 0.0f, 0.0f, 9.0f ),                // Coord. observateur par défaut
  45.           Target( 0.0f, 0.0f, 0.0f );                // Coord. cible par défaut
  46.  
  47. D3DVECTOR Cursor1( 5.0f, -5.0f, 5.0f ),                // Coord. curseur 1 par défaut
  48.           Cursor2( 1.0f, 1.0f, 1.0f ),                // Coord. curseur 2 par défaut
  49.           Cursor3( -1.0f, -1.0f, -1.0f );            // Coord. curseur 3 par défaut
  50.  
  51. D3DVECTOR vTracker;
  52.  
  53. D3DMATRIX    matView,                                // Matrice caméra
  54.             matProj,                                // Matrice caméra
  55.             matWorld;                                // Matrice caméra
  56.  
  57. float    fXmin = -10.,                                // Espace de travail triview : X min
  58.         fXmax = 10.,                                // Espace de travail triview : X max
  59.         fYmin = -10.,                                // Espace de travail triview : Y min
  60.         fYmax = 10.,                                // Espace de travail triview : Y max
  61.         fZmin = -10.,                                // Espace de travail triview : Z min
  62.         fZmax = 10.;                                // Espace de travail triview : Z max
  63.  
  64. SkulptGadget  gAddPoint,                                  // Gadget Sculpt3D : Ajouter point
  65.         gCenter,                                    // Gadget Sculpt3D : Centrer la vue sur le curseur
  66.         gGoDown,                                    // Gadget Sculpt3D : Descendre (dans la vue courante)
  67.         gGoLeft,                                    // Gadget Sculpt3D : Aller à gauche (idem)
  68.         gGoUp,                                        // Gadget Sculpt3D : Monter (idem)
  69.         gGoRight,                                    // Gadget Sculpt3D : Aller à droite (idem)
  70.         gGrab,                                        // Gadget Sculpt3D : Activer pince
  71.         gMakeTri,                                    // Gadget Sculpt3D : Créer triangle (entre les 3 curseurs)
  72.         gReverse,                                    // Gadget Sculpt3D : ???
  73.         gRotAnti,                                    // Gadget Sculpt3D : Rotation anti clockwise
  74.         gRotClock,                                    // Gadget Sculpt3D : Rotation clockwise
  75.         gZoomIn,                                    // Gadget Sculpt3D : Zoomer en avant
  76.         gZoomOut;                                    // Gadget Sculpt3D : Zoomer en arrière
  77.  
  78. HWND    hWndPersp,                                    // Handle fenêtre vue 3D
  79.         hWndTop,                                    // Handle fenêtre vue de dessus
  80.         hWndFace,                                    // Handle fenêtre vue de face
  81.         hWndRight,                                    // Handle fenêtre vue de droite
  82.         hWndMenu,                                    // Handle fenêtre menu
  83.         hWndTrace,                                    // Handle sous-fenêtre listbox trace
  84.         hWndDlg = NULL;                             // Handle de dlgbox
  85.  
  86. gSommet Vertices[XDC_NUMPT];                        // Tableau global de points
  87. gEdge    Edges[XDC_NUMEDGE];                            // Tableau global de segments
  88. gTri    Triangles[XDC_NUMTRI];                        // Tableau global de triangles
  89. gLamp    Lampes[XDC_NUMLAMP];                        // Tableau global de lampes
  90. gObject    Objects[XDC_NUMOBJECTS];                    // Tableau global d'objets
  91. gMtrl   Materials[XDC_NUMMTRL];                     // Tableau global de matériaux
  92. gTex    Textures[XDC_NUMTEX];                       // Tableau global de textures
  93.  
  94. int iVertLastUsed = -1, iVertFirstAvailable = 0;
  95. int iEdgeLastUsed = -1, iEdgeFirstAvailable = 0;
  96. int iTriaLastUsed = -1, iTriaFirstAvailable = 0, iTriaHilit = -1;
  97. int iLampLastUsed = -1, iLampFirstAvailable = 0, iLampHilit = -1;
  98. int iObjtLastUsed = -1, iObjtFirstAvailable = 0;
  99. int iMtrlLastUsed = -1, iMtrlFirstAvailable = 0;
  100. int iTextLastUsed = -1;
  101.  
  102. BOOL bCoords = FALSE;                                // Afficher les coordonnées o/n
  103.  
  104. D3DCOLOR    cAmbient = 0xffffffff,                    // Couleur lumière ambiante BGR
  105.             cBack = 0x00500000;                        // Couleur arrière plan     BGR
  106.  
  107. DWORD dFillMode = D3DFILL_SOLID;                    // Mode de dessin 3D par défaut (point, fil, face)
  108. DWORD dZBuf = D3DZB_TRUE;                            // Z-Buffer (o/n)
  109. BOOL  bAlpha = FALSE;                                // Alpha blending o/n
  110. BOOL  bSpecular = FALSE;
  111. DWORD dCull = D3DCULL_CCW;
  112. BOOL bAntialias = TRUE;
  113.  
  114. char *sLogo = "wcLogo";                                // Nom de la classe de fenêtre logo
  115. char *sMenu = "wcMenu";                                // Nom de la classe de fenêtre menu
  116. char *sPersp = "wcPersp";                            // Nom de la classe de fenêtre 3D
  117. char *sPlanar = "wcPlanar";                            // Nom de la classe de fenêtre 2D
  118.  
  119. char cTool = XDC_TOOL_NONE;                            // Outil courant : NONE, GRAB, SELECT, CURVE, MAGNET
  120.  
  121. D3DEnum_DeviceInfo *m_pDeviceInfo;
  122.  
  123. char cTitle[255], cString[255];
  124.  
  125. long lWActive = XDC_WID_TOP;                          // HWND de la fenêtre 2D active (face, top, right)
  126.  
  127. int iHoles;                                            // Nombre de trous dans une courbe à trianguler
  128. HWND hHoleDlgActive = NULL;                            // Booléen indiquant à la proc de gestion des fenêtres 2D si les clics doivent être passés à la dlgproc de gestion des trous dans le fill pour les identifier
  129. double dHoles[XDC_MAX_HOLES * 2];                    // suite de iHoles couples XY des trous
  130. SMALLBOOL bFillAndRemoveEdges = TRUE;                // Si TRUE, fill() doit supprimer les arêtes après triangulation d'une courbe
  131.  
  132. BOOL bTracking = FALSE;                                // Poursuite curseur en cours o/n (WM_LBUTTONDOWN / WM_MOUSEMOVE)
  133.  
  134. #ifdef _AMIGA_
  135. Library *GadToolsBase    = (Library *) NULL;
  136. Library *UtilityBase     = (Library *) NULL;
  137. Library *AslBase         = (Library *) NULL;
  138. Library *AmigaGuideBase  = (Library *) NULL;
  139. Library *DataTypesBase   = (Library *) NULL;
  140. Library *IconBase        = (Library *) NULL;
  141. Library *DiskfontBase    = (Library *) NULL;
  142. Library *CyberGfxBase    = (Library *) NULL;
  143. W3D_Context *hW3DC_2D = NULL;
  144. W3D_Scissor sScissor;
  145. ULONG lSigMask, l2DWinSigMask;
  146. UBYTE uHint[10];
  147. APTR hVi = NULL;
  148. #ifndef __PPC__
  149. Library *Warp3DBase      = (Library *) NULL;
  150. #else
  151. Library *Warp3DPPCBase   = (Library *) NULL;
  152. #endif
  153. Task    *hApp = (Task *) NULL;
  154. #endif
  155.